
//=======================================================================
//@GtFNg\֐WłB
//@̃t@Cinclude_functionŎ荞ނA
//@KvȕRsyĎgpĂB
//=======================================================================

//=======================================================================
//  摜ւ̃pX \Ⴄꍇ͗vύX
//-----------------------------------------------------------------------
let imgeff = GetCurrentScriptDirectory~".\img\Effect.png";
//=======================================================================

//-----------------------------------------------------------------------
//  GtFNg [th06`th14] []
//-----------------------------------------------------------------------
task Concentration03(time,r,g,b) {

	loop(time-27) {
		Concentration(0,r,g,b);
		yield;
	}
}

//-----------------------------------------------------------------------
//  GtFNg [th06`th14] []
//-----------------------------------------------------------------------
task Concentration04(time,r,g,b) {

	loop(time-27) {
		Concentration(1,r,g,b);
		yield;
	}
}

//-----------------------------------------------------------------------
//  GtFNg [th10`th14] [t]
//-----------------------------------------------------------------------
task Concentration05(time,r,g,b) {

	loop(time-27) {
		Concentration(2,r,g,b);
		yield;
	}
}

//-----------------------------------------------------------------------
//  GtFNg [th07`th14] [ԕ]
//-----------------------------------------------------------------------
task Concentration06(time,r,g,b) {

	loop(time-27) {
		Concentration(3,r,g,b);
		yield;
	}
}

//-----------------------------------------------------------------------
//  gUGtFNg [th08`th14] [t]
//-----------------------------------------------------------------------
task Diffusion01(nam,r,g,b) {

	loop(nam/5) {
		loop(5) { Diffusion(2,r,g,b) }
		loop(3) { yield; }
	}
}

//-----------------------------------------------------------------------
//  gUGtFNg [th07  th14] [ԕ]
//-----------------------------------------------------------------------
task Diffusion02(nam,r,g,b) {

	loop(nam/5) {
		loop(5) { Diffusion(3,r,g,b) }
		loop(3) { yield; }
	}
}

//-----------------------------------------------------------------------
//  GtFNg [th06`th14] []
//-----------------------------------------------------------------------
task Concentration(type,r,g,b) {

	let a        = Obj_Create(OBJ_EFFECT);
	let mimscale = [1.0, 1.0, 1.0, 1.0];
	let maxscale = [2.5, 4.0, 4.0, 3.0];
	let rectU1   = [ 64,  64,  32,  32];
	let rectV1   = [ 32,   0,   0,  32];
	let rectU2   = [ 96,  96,  64,  64];
	let rectV2   = [ 64,  32,  32,  64];
	let scale    = rand(mimscale[type],maxscale[type]);
	let angle    = rand(0,360);
	let alpha    = 0;
	let i1       = 1.0;
	let i2       = rand(-2,2);

	if(type==0) { i1 = 1.25; i2 = 0; }

	LoadGraphic(imgeff);

	Obj_SetPosition(a,GetEnemyX+200*cos(angle),GetEnemyY+200*sin(angle));
	Obj_SetSpeed(a,200/30);
	Obj_SetAngle(a,angle+180);
	ObjEffect_SetTexture(a,imgeff);
	ObjEffect_SetRenderState(a,ADD);
	ObjEffect_SetPrimitiveType(a,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetAngle(a,0,0,angle);
	ObjEffect_SetScale(a,scale*i1,scale);
	ObjEffect_SetLayer(a,3);
	ObjEffect_CreateVertex(a,4);
	ObjEffect_SetVertexXY(a,0,-16,-16);
	ObjEffect_SetVertexXY(a,1,-16, 16);
	ObjEffect_SetVertexXY(a,2, 16,-16);
	ObjEffect_SetVertexXY(a,3, 16, 16);
	ObjEffect_SetVertexUV(a,0,rectU1[type],rectV1[type]);
	ObjEffect_SetVertexUV(a,1,rectU1[type],rectV2[type]);
	ObjEffect_SetVertexUV(a,2,rectU2[type],rectV1[type]);
	ObjEffect_SetVertexUV(a,3,rectU2[type],rectV2[type]);
	ObjEffect_SetVertexColor(a,0,alpha,r,g,b);
	ObjEffect_SetVertexColor(a,1,alpha,r,g,b);
	ObjEffect_SetVertexColor(a,2,alpha,r,g,b);
	ObjEffect_SetVertexColor(a,3,alpha,r,g,b);

	loop(20) {
		angle += 6*i2;
		alpha += 255/20;
		ObjEffect_SetAngle(a,0,0,angle);
		ObjEffect_SetVertexColor(a,0,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,1,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,2,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,3,alpha,r,g,b);
		yield;
	}
	loop(12) {
		angle += 6*i2;
		alpha -= 255/12;
		ObjEffect_SetAngle(a,0,0,angle);
		ObjEffect_SetVertexColor(a,0,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,1,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,2,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,3,alpha,r,g,b);
		yield;
	}
	Obj_Delete(a);
}

//-----------------------------------------------------------------------
//  gUGtFNg [th07`th14] []
//-----------------------------------------------------------------------
task Diffusion(type,r,g,b) {

	let a        = Obj_Create(OBJ_EFFECT);
	let mimscale = [1.0, 1.0, 1.0, 1.0];
	let maxscale = [2.5, 4.0, 4.0, 3.0];
	let rectU1   = [ 64,  64,  32,  32];
	let rectV1   = [ 32,   0,   0,  32];
	let rectU2   = [ 96,  96,  64,  64];
	let rectV2   = [ 64,  32,  32,  64];
	let scale    = rand(mimscale[type],maxscale[type]);
	let angle    = rand(0,360);
	let alpha    = 255;
	let i1       = 1.0;
	let i2       = rand(-2,2);

	if(type==0) { i1 = 1.25; i2 = 0; }

	LoadGraphic(imgeff);

	Obj_SetPosition(a,GetEnemyX,GetEnemyY);
	Obj_SetSpeed(a,rand(100,200)/30);
	Obj_SetAngle(a,angle);
	ObjEffect_SetTexture(a,imgeff);
	ObjEffect_SetRenderState(a,ADD);
	ObjEffect_SetPrimitiveType(a,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetAngle(a,0,0,angle);
	ObjEffect_SetScale(a,scale*i1,scale);
	ObjEffect_SetLayer(a,3);
	ObjEffect_CreateVertex(a,4);
	ObjEffect_SetVertexXY(a,0,-16,-16);
	ObjEffect_SetVertexXY(a,1,-16, 16);
	ObjEffect_SetVertexXY(a,2, 16,-16);
	ObjEffect_SetVertexXY(a,3, 16, 16);
	ObjEffect_SetVertexUV(a,0,rectU1[type],rectV1[type]);
	ObjEffect_SetVertexUV(a,1,rectU1[type],rectV2[type]);
	ObjEffect_SetVertexUV(a,2,rectU2[type],rectV1[type]);
	ObjEffect_SetVertexUV(a,3,rectU2[type],rectV2[type]);
	ObjEffect_SetVertexColor(a,0,alpha,r,g,b);
	ObjEffect_SetVertexColor(a,1,alpha,r,g,b);
	ObjEffect_SetVertexColor(a,2,alpha,r,g,b);
	ObjEffect_SetVertexColor(a,3,alpha,r,g,b);

	loop(60) {
		angle += 6*i2;
		alpha -= 255/60;
		ObjEffect_SetAngle(a,0,0,angle);
		ObjEffect_SetVertexColor(a,0,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,1,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,2,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,3,alpha,r,g,b);
		yield;
	}
	Obj_Delete(a);
}

//-----------------------------------------------------------------------
//  GtFNg [th06`th08]
//-----------------------------------------------------------------------
task Explosion02(x,y,desalpha,r,g,b,addscale,time) {

	let a        = Obj_Create(OBJ_EFFECT);
	let scale    = 0;
	let angle    = rand(0,360);
	let alpha    = 255;

	LoadGraphic(imgeff);

	Obj_SetPosition(a,x,y);
	ObjEffect_SetTexture(a,imgeff);
	ObjEffect_SetRenderState(a,ADD);
	ObjEffect_SetPrimitiveType(a,PRIMITIVE_TRIANGLESTRIP);
	ObjEffect_SetAngle(a,0,0,rand(0,360));
	ObjEffect_SetScale(a,scale,scale);
	ObjEffect_SetLayer(a,3);
	ObjEffect_CreateVertex(a,4);
	ObjEffect_SetVertexXY(a,0,-16,-16);
	ObjEffect_SetVertexXY(a,1,-16, 16);
	ObjEffect_SetVertexXY(a,2, 16,-16);
	ObjEffect_SetVertexXY(a,3, 16, 16);
	ObjEffect_SetVertexUV(a,0, 96, 0);
	ObjEffect_SetVertexUV(a,1, 96,32);
	ObjEffect_SetVertexUV(a,2,128, 0);
	ObjEffect_SetVertexUV(a,3,128,32);
	ObjEffect_SetVertexColor(a,0,alpha,r,g,b);
	ObjEffect_SetVertexColor(a,1,alpha,r,g,b);
	ObjEffect_SetVertexColor(a,2,alpha,r,g,b);
	ObjEffect_SetVertexColor(a,3,alpha,r,g,b);

	loop(time) {
		alpha -= desalpha;
		scale += addscale;
		ObjEffect_SetScale(a,scale,scale);
		ObjEffect_SetVertexColor(a,0,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,1,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,2,alpha,r,g,b);
		ObjEffect_SetVertexColor(a,3,alpha,r,g,b);
		yield;
	}
	Obj_Delete(a);
}